package lambda;
/**本类用于lambda表达式入门*/
/**lambda表达式的格式:
 * ():是用来写参数的
 * ->: 用箭头表示我们即将要做的事，也就是具体要做的业务，参数可以拿到方法体里去使用
 * {}:我们可以把它看作是一个代码块代表了之前我们在方法体中需要写的业务内容*/
/**注意:lambda表达式只能用于:1.必须是接口 2.接口里面必须只能有一个抽象方法(只有一个抽象方法的接口 我们叫做函数式接口)
 * lambda表达式的使用场景:必须在有上下文的前提下，才能使用lambda表达式
 * 因为lambda表达式要根据上下文去推断自己实现的那个接口，如果没有上下文，不知道实现哪个接口，会编译报错*/
public class Text1 {
    public static void main(String[] args) {
        /**：使用匿名内部类的方式来调用
        直接调用getAnimal(),参数处以创建匿名内部类的方式来完成*/
        getInter(new Inter() {
            public void show() {
                System.out.println("匿名内部类重写show方法");
            }
        });//这是匿名内部类实现接口
       getInter(()->{ System.out.println("我终于出来了");});
    }
    public static void getInter(Inter in){
        in.show();
    }
}
interface Inter{
    void show();
}
class InterImpl implements Inter{

    @Override
    public void show() {
        System.out.println("我终于出来了");
    }
}

